﻿using System;
using System.ComponentModel.DataAnnotations;
using FluentNHibernate.Conventions;
using FluentNHibernate.Conventions.Instances;

namespace ToyStore.Infrastructure.NHibernateMaps.Conventions
{
    /// <summary>
    /// Konwencja długość stringów
    /// </summary>
    public class StringLengthConvention : AttributePropertyConvention<StringLengthAttribute>
    {
		/// <summary>
		/// Zatosowanie konwencji
		/// </summary>
		/// <param name="attribute">Atrybut znad obiektu</param>
		/// <param name="instance">Właściwość ustawiająca kolumnę w bazie</param>
		protected override void Apply(StringLengthAttribute attribute, IPropertyInstance instance)
		{
			if (attribute == null)
				throw new ArgumentNullException("attribute");
			if (instance == null)
				throw new ArgumentNullException("instance");

			if(attribute.MaximumLength != default(int))
				instance.Length(attribute.MaximumLength);
		}
	}
}
